<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 老师做法
        // 利用函数封装方式 翻转任意一个数组
        // ['pink','blue','purple','black']
        // function get(arr) {
        //     var newArr =[]
        //     for (var i = arr.length-1; i >= 0;i-- ) {
        //         // 1.newArr[newArr.length] .length是动态检测数组长度 newArr是空数组 所以检测的肯定是索引0 所以让旧数组传递过来的值 会按照索引号从0开始 依次排列 达到一个翻转的效果
        //         newArr[newArr.length] = arr[i] //2.arr[i]初始值为旧数组最后一位 然后根据循环 操作表达式i-- 依次递减 到旧数组第一位 （返回到新数组就是是按照正确的正向的排列了 因为新数组有.length 解释如1）
        //     }
        //     return newArr
        // }
        // var re = get([1,2,3,5,6,7,8,9])
        // console.log(re);



        //  练习 
        //利用函数封装方式 翻转任意一个数组
        //['pink','blue','purple   ','black']
        //翻转的思路 
        // 1 定义一个新的为空的数组[]
        // 2 遍历循环旧数组 
        // 3 循环初始值旧数组最后一位arr.length-1  条件表达为i > = 0  操作表达式i-- （翻转都是递减）  
        // 4 新数组第一位等于旧数组最后一位
        // 7 新数组第一位用数组名+.lengt表达
        // function get(arr) {
        //     var newArr = []
        //     for (var i = arr.length - 1; i >= 0; i--) {
        //         //   newArr[newArr.length] = 新数组索引0 也就是第一位 .length会动态监测数组长度 因为newArr是空的数组 所以会默认0 整合符合新数组第一位与 旧数组最后一位取交换的需求 arr[i]我们设置的就是 最后一位arr.length -1 
        //         newArr[newArr.length] = arr[i]
        //     }
        //     return newArr
        // }
        // var re = get(['pink', 'blue', 'purple', 'black'])
        // console.log(re);//["black", "purple", "blue", "pink"] 翻转成功 记住基本都是固定的公式 实在不懂的可以背住 例如翻转的话  1.就需要一组为空的新数组 2.旧数组循环 初始值 要通过数组名+length-1的到最一位 3.循环的范围条件表达式 要大于等于0 因为一直交换到新数组的索引0 操作表达式 翻转就记得 递减i--

        //     function get(arr) {
        //     var newArr = []
        //     for(var i = arr.length-1; i >= 0 ; i--) {
        //         newArr[newArr.length] = arr[i]
        //     }
        //     return newArr
        //     }
        //    var re =  get(['pink','blue','purple   ','black'])
        //    console.log(re);//["black", "purple   ", "blue", "pink"]




        //    案例2 函数封装 数组冒泡排序
        // 双重循环 外层控制趟数 内层控制每趟交换的次数
        // 如果内层循环：第一个元素小于第二个元素 arr[j] < arr[j + 1] 那么就让他俩互相交换（小于还是大于无所谓 可以输出看下再调 其他不要错就行）
        // 交换两个变量需要定义一个新的临时变量temp
        // function str(arr) {
        //     for (var i = 0; i < arr.length; i++) {
        //         for (var j = 0; j < arr.length - i - 1; j++) {
        //             if (arr[j] < arr[j + 1]) {
        //                 var temp = arr[j]
        //                 arr[j] = arr[j + 1]
        //                 arr[j + 1] = temp
        //             }
        //         }
        //     }
        //     return arr
        // }
        // var re = str([3, 4, 1, 2, 5])
        // console.log(re);




        // 案例3 输入年份 判断是否是闰年 能被4整除并且不能被100整除 或者能被400整除
// 老师做法
         function isRunYear (year)  {//2
             var flag = false//3
             if(year % 4 == 0 && year % 100 !== 0 || year % 400 == 0) {//4
                 flag = true//5
             }
                return flag//6
         }
    console.log( isRunYear(2000));//ture 1.2000符合分支条件 flag= true 原值被覆盖
    console.log( isRunYear(1999));//false1999不符合分支条件 所以不执行flag = ture 维持原值false
















        // function get(year) {
        //     if (year % 4 == 0 && year % 100 !== 0 || year % 400 == 0 ) {
        //         return year + ' 是闰年'
        //     } 
        //      return year + '是平年'
           
        // }
        // var re =  get(year = prompt('请输入年份'))
        //     alert(re)
    </script>
</head>

<body>

</body>

</html>